package kr.hkit.powerjava.chapter23;

public class ThreadControl {
	static void print(String msg){
		String threadName=Thread.currentThread().getName();
		System.out.format("%s:%s%n",threadName, msg);
	}
	
	private static class MessageLoop implements Runnable{
		public void run(){
			String[] messge= {"Pride will have a fall.",
					"Power is danfrous unless you have humility.",
					"Empty vessls make the most sound."
			};
			
			for(int i=0;i<messge.length; i++){
				print(messge[i]);
				try {
					Thread.sleep(2000);
				} catch (InterruptedException e) {
					print("아직 끝나지 않았어요");
				}
				
			}
		}//end of method run()
	}// end to class MessageLoop
	
	public static void main(String[] args) throws InterruptedException {
		int tries = 0;
		
		ThreadControl.print("추가적인 스레드를 시작합니다.");
		Thread t = new Thread(new MessageLoop());
		t.start();
		
		ThreadControl.print("추가적인 스레드가 끝나기를 기다립니다.");
		
		while(t.isAlive()){
			ThreadControl.print("아직 기다립니다.");
			t.join(1000);
			tries++;
			if(tries>2){
				ThreadControl.print("참을 수 없네요.");
				t.interrupt();
				t.join();
			}
		}
		ThreadControl.print("메인 스레드 종료.");
	}
	
}
